﻿using BCCommon;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.MarketingCoupon.MarketingCouponType;
using BCDto.TMS.MarketingCoupon.MarketingCouponType.MarketingCouponTypeRequest;
using BCEntity.TMS.MarketingCoupon.MarketingCouponType;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCService.TMS.MarketingCoupon.MarketingCouponType
{
    public interface IMarketingCouponTypeService
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="requestDto">优惠券类型</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MarketingCouponTypeDto AgentCreate(MarketingCouponTypeRequestDto requestDto,AdminDto admin);

        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="marketingCouponTypeId">优惠券类型Id</param>
        /// <returns></returns>
        MarketingCouponTypeViewDto GetSingle(long marketingCouponTypeId);
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="admin">管理员</param>
        /// <param name="isEnabled">是否启用</param>
        /// <param name="isValid">是否有效</param>
        /// <param name="couponMinAmount">优惠最小金额</param>
        /// <param name="couponMaxAmount">优惠最大金额</param>
        /// <returns></returns>
        IEnumerable<MarketingCouponTypeViewDto> GetList(AdminDto admin,bool? isEnabled,bool? isValid, decimal? couponMinAmount, decimal? couponMaxAmount);

        /// <summary>
        /// 启用
        /// </summary>
        /// <param name="marketingCouponTypeId">优惠券类型id</param>
        /// <param name="admin"></param>
        /// <returns></returns>
        bool Enabled(long marketingCouponTypeId, AdminDto admin);
        /// <summary>
        /// 禁用
        /// </summary>
        /// <param name="marketingCouponTypeId">优惠券类型id</param>
        /// <param name="admin"></param>
        /// <returns></returns>
        bool Disabled(long marketingCouponTypeId, AdminDto admin);
        /// <summary>
        /// 设置可选地区
        /// </summary>
        /// <param name="marketingCouponTypeId">优惠券类型id</param>
        /// <param name="requestDto">地区list</param>
        /// <param name="admin"></param>
        /// <returns></returns>
        bool SetAddress(long marketingCouponTypeId, MarketingCouponAddressRequestDto requestDto, AdminDto admin);
    }
}
